<?php

class ZFKiller_Form_Element_UfCidade extends ZFKiller_Form_Element_Select {

	public $helper = 'formUfCidade';
	private $_columnCduf = 'cdEstado';
	private $_valueUf = 0;
	/**
	 *
	 * @var ZFKiller_Model_DbTable_UfCidade
	 */
	private $_model;

	public function __construct($spec, $options = null, ZFKiller_Model_DbTable_UfCidade $model) {
		parent::__construct($spec, $options);

		$this->_model = $model;

		$view = $this->getView();
		$view->addHelperPath(PATH_ZFEXTEND . '/ZFKiller/View/Helper/', 'ZFKiller_View_Helper');

		$this->setRegisterInArrayValidator(false);

		$this->setRequired();

		$greaterThanValidator = new Zend_Validate_GreaterThan(1);
		$greaterThanValidator->setMessages(array(
			Zend_Validate_GreaterThan::NOT_GREATER => 'Selecione uma cidade',
		));
		$this->addValidator($greaterThanValidator);
	}

	public function render(Zend_View_Interface $view = null) {

		$cidadeOptions = array('Selecione um UF');
		if (((int) $this->getValue()) > 0) {
			$cidadeRs = $this->_model->getCidade($this->getValue());
			if (!is_null($cidadeRs)) {
				$this->_valueUf = $cidadeRs->__get($this->_columnCduf);
				$cidadeOptions = $this->_model->getCidadeList($this->_valueUf);
			}
		}
		$this->setMultiOptions($cidadeOptions);

		$ufCollection = $this->_model->getUfList();

		$viewT = $this->getView();
		$viewT->assign('optionsUF', $ufCollection);
		$viewT->assign('optionsUFValue', $this->_valueUf);

		return parent::render($view);
	}

	public function setColumnCduf($columnCduf) {
		$this->_columnCduf = $columnCduf;
		return $this;
	}

}